package com.clement.theAndroidSalesman;

import java.util.List;
import java.util.Random;

import android.view.View;

import com.clement.theAndroidSalesman.ui.Ville;

public class Tools {
	public static int getRandXInBounds(Ville villeAAjouter, View v) {
		Random rand = new Random();
		int x = rand.nextInt(v.getWidth());
		x += (x <= (villeAAjouter.getLargeur() / 2)) ? (villeAAjouter.getLargeur() / 2) : 0;
		x -= (x >= (v.getWidth() - (villeAAjouter.getLargeur() / 2))) ? (villeAAjouter.getLargeur() / 2)
				: 0;
		return x;
	}

	public static int getRandYInBounds(Ville villeAAjouter, View v) {
		Random rand = new Random();
		int y = rand.nextInt(v.getHeight());
		y += (y <= (villeAAjouter.getHauteur() / 2)) ? (villeAAjouter.getHauteur() / 2) : 0;
		y -= (y >= (v.getHeight() - (villeAAjouter.getHauteur() / 2))) ? (villeAAjouter
				.getHauteur() / 2) : 0;
		return y;
	}

	public static double distance(float xa, float xb, float ya, float yb) {
		return Math.sqrt(Math.pow(xb - xa, 2) + Math.pow(yb - ya, 2));
	}

	public static double distance(Ville v1, Ville v2) {
		return Tools.distance(v1.getX(), v2.getX(), v1.getY(), v2.getY());
	}

	public static double distance(List<Ville> villes) {
		double distance = 0;

		Ville villePrecedente = villes.get(0);
		for (Ville ville : villes) {
			if (!ville.equals(villes.get(0))) {
				distance += Tools.distance(villePrecedente, ville);
			}
			villePrecedente = ville;
		}
		distance += Tools.distance(villePrecedente, villes.get(0));

		return distance;
	}
}
